Bài 033 - Bài tập kế thừa
Đề bài:
Hãy xây dựng hệ thống quản lý thư viện với các yêu cầu sau:
-
Tạo một lớp
Item
gồm các thuộc tính:id
: mã tài liệutitle
: tiêu đềauthor
: tác giả
-
Tạo lớp
Book
kế thừa từItem
, có thêm:pages
: số trang
-
Tạo lớp
DVD
kế thừa từItem
, có thêm:duration
: thời lượng (phút)
-
Tạo lớp
Magazine
kế thừa từItem
, có thêm:issue
: số phát hành
-
Tất cả các lớp đều có phương thức
printInfo()
để in ra đầy đủ thông tin.
Yêu cầu:
- Sử dụng
super()
để tái sử dụng constructor lớp cha. - Ghi đè phương thức
printInfo()
tại các lớp con. - Tạo danh sách chứa nhiều đối tượng (book, dvd, magazine) và in ra toàn bộ thông tin bằng vòng lặp.
Gợi ý đầu ra mong đợi:
Book: [ID: B001] Title: Lập trình Python | Author: Nguyễn Văn A | Pages: 320
DVD: [ID: D101] Title: Học Python qua phim | Author: Lê Thị B | Duration: 90 minutes
Magazine: [ID: M301] Title: Công nghệ hôm nay | Author: Trần C | Issue: #45
Bài tập 2: Mô phỏng hệ thống giáo dục
Đề bài:
Thiết kế một hệ thống phân cấp cho các loại người trong trường học:
-
Lớp
Person
: có thuộc tínhname
,age
, và phương thứcintroduce()
. -
Lớp
Student
kế thừa từPerson
, thêm thuộc tínhstudent_id
,major
, và ghi đèintroduce()
để hiển thị thông tin sinh viên. -
Lớp
Teacher
kế thừa từPerson
, thêm thuộc tínhteacher_id
,subject
, và cũng ghi đèintroduce()
. -
Lớp
TeachingAssistant
kế thừa đa cấp từStudent
vàTeacher
. Đây là sinh viên có vai trò trợ giảng.
Yêu cầu:
- Cài đặt đầy đủ constructor với
super()
. - Áp dụng
Method Resolution Order (MRO)
khi gọiintroduce()
từTeachingAssistant
. - Khởi tạo một vài đối tượng cho mỗi lớp và gọi phương thức
introduce()
để kiểm tra kết quả.
Gợi ý đầu ra mong đợi:
Hi, I'm Nam, 20 years old. I'm a Computer Science student, ID: SV123.
Hi, I'm Cô Hương, 35 years old. I teach Mathematics, ID: GV456.
Hi, I'm An, 22 years old. I'm a Computer Science student and also a teaching assistant for the course Programming 101.